home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 004 / pi.arc / PI.BAS
BASIC Source File  |  1985-09-27  |  2KB  |  120 lines

  1. 10 PRINT "MULTIPLE PRECISION COMPUTATION OF PI TO Q DECIMAL PLACES"
  2. 20 PRINT
  3. 30 INPUT "Enter number of decimal places to be calculated ";Q
  4. 40 REM
  5. 50 REM P WILL CONTAIN PI.  T IS THE AUXILLARY ARRAY.
  6. 60 REM
  7. 70 DIM P(Q), T(Q)
  8. 80 REM
  9. 90 REM * * * * * * * * * * * * * * * * * * * *
  10. 100 REM  MAIN PROGRAM - COMPUTATION OF PI
  11. 110 REM  * * * * * * * * * * * * * * * * * * *
  12. 120 REM
  13. 130 LET S=2
  14. 140 GOSUB 270
  15. 150 LET S=3
  16. 160 GOSUB 270
  17. 170 GOSUB 1090
  18. 180 FOR M=0 TO Q
  19. 190 PRINT P(M);
  20. 200 NEXT M
  21. 210 END
  22. 220 REM
  23. 230 REM * * * * * * * * * * * *
  24. 240 REM END OF MAIN PROGRAM
  25. 250 REM * * * * * * * * * * * *
  26. 260 REM
  27. 270 REM COMPUTE ARC TANGENT
  28. 280 REM
  29. 290 LET T(0)=1
  30. 300 LET L=S
  31. 310 GOSUB 850
  32. 320 GOSUB 490
  33. 330 N=1
  34. 340 GOSUB 730
  35. 350 L=S*S
  36. 360 GOSUB 850
  37. 370 N=N+2
  38. 380 L=N
  39. 390 GOSUB 850
  40. 400 IF ((N-1)\2) MOD 2=0 GOTO 430
  41. 410 GOSUB 610
  42. 420 GOTO 440
  43. 430 GOSUB 490
  44. 440 GOSUB 970
  45. 450 IF Z>0 GOTO 340
  46. 460 RETURN
  47. 470 END
  48. 480 REM
  49. 490 REM SUBROUTINE TO ADD ARRAYS
  50. 500 REM
  51. 510 FOR J=Q TO 0 STEP -1
  52. 520     IF T(J)+P(J)>9 GOTO 550
  53. 530     P(J)=T(J)+P(J)
  54. 540     GOTO 570
  55. 550     P(J)=T(J)+P(J)-10
  56. 560     P(J-1)=P(J-1)+1
  57. 570 NEXT J
  58. 580 RETURN
  59. 590 END
  60. 600 REM
  61. 610 REM SUBROUTINE TO SUBTRACT ARRAYS
  62. 620 REM
  63. 630 FOR J=Q TO 0 STEP -1
  64. 640     IF P(J)<T(J) GOTO 670
  65. 650     P(J)=P(J)-T(J)
  66. 660     GOTO 690
  67. 670     P(J)=P(J)-T(J)+10
  68. 680     P(J-1)=P(J-1)-1
  69. 690 NEXT J
  70. 700 RETURN
  71. 710 END
  72. 720 REM
  73. 730 REM SUBROUTINE TO MULTIPLY ARRAY T BY N
  74. 740 REM
  75. 750 C=0
  76. 760 D=0
  77. 770 FOR I=Q TO 0 STEP -1
  78. 780     D=(T(I)*N+C) MOD 10
  79. 790     C=(T(I)*N+C)\10
  80. 800     LET T(I)=D
  81. 810 NEXT I
  82. 820 RETURN
  83. 830 END
  84. 840 REM
  85. 850 REM SUBROUTINE TO DIVIDE ARRAY T BY L
  86. 860 REM
  87. 870 C=O
  88. 880 D=0
  89. 890 FOR K=0 TO Q
  90. 900     C=(10*D+T(K))\L
  91. 910     D=(10*D+T(K)) MOD L
  92. 920     T(K)=C
  93. 930 NEXT K
  94. 940 RETURN
  95. 950 END
  96. 960 REM
  97. 970 REM SUBROUTINE TO CHECK IF ARRAY T IS 0
  98. 980 REM
  99. 990 Z=0
  100. 1000 K=0
  101. 1010 IF T(K)=0 GOTO 1040
  102. 1020 Z=1
  103. 1030 GOTO 1060
  104. 1040 K=K+1
  105. 1050 IF K<=Q GOTO 1010
  106. 1060 RETURN
  107. 1070 END
  108. 1080 REM
  109. 1090 REM SUBROUTINE TO MULTIPLY ARRAY P BY 4
  110. 1100 REM
  111. 1110 C=0
  112. 1120 D=0
  113. 1130 FOR I=Q TO 0 STEP -1
  114. 1140    D=(P(I)*4+C) MOD 10
  115. 1150    C=(P(I)*4+C)\10
  116. 1160    P(I)=D
  117. 1170 NEXT I
  118. 1180 RETURN
  119. 1190 END
  120.